package model;

import java.io.Serializable;
import java.util.Collection;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.GeneratedValue;
import javax.persistence.Table;
@Entity
@Table(name = "TECNICO")
public class Tecnico implements Serializable{
 
	private static final long serialVersionUID = 1564108066778365586L;
	@Id
	@Column(name = "TECN_ID")
	@GeneratedValue
	private Integer id;

	@Column(name = "TECN_NM_CPF", nullable = false, unique = true)
	private String cpf;
	
	@Column(name = "TECN_TX_NOME")
	private String nome;

/**
 * Lista de Amparos Legais para o Assunto
 */
@ManyToMany
@JoinTable(name = "TECNICO_OS", 
		inverseJoinColumns = { @JoinColumn(name = "ORSE_ID", referencedColumnName = "ORSE_ID") },
		joinColumns = { @JoinColumn(name = "TECN_ID", referencedColumnName = "TECN_ID") })
	private Collection <OrdemServico> colOrdemServico;

@OneToMany(mappedBy = "tecnico")
private Collection <Visita> colVisita;

@ManyToMany
@JoinTable(name = "TECNICO_VIATURA", 
		inverseJoinColumns = { @JoinColumn(name = "VIAT_ID", referencedColumnName = "VIAT_ID") }, 
		joinColumns = { @JoinColumn(name = "TECN_ID", referencedColumnName = "TECN_ID") })
	private Collection<Viatura> colViatura;
@ManyToOne(optional = true)
@JoinColumn(name = "EMTE_ID", referencedColumnName = "EMTE_ID")
	private EmpresaTerceira empresaTerceira;

	@ManyToMany(mappedBy="colTecnico")
	private Collection <Regiao> colRegiao;
	
	@OneToMany(mappedBy = "tecnico")
	private Collection <ItemCalendarioDeTrabalho> colItemCalendarioDeTrabalho;
	@OneToMany(mappedBy = "tecnico")
	private Collection <itemCalendarioDeFolga> colIitemCalendarioDeFolga;

	public EmpresaTerceira getEmpresaTerceira() {
		return empresaTerceira;
	}

	public Collection<itemCalendarioDeFolga> getColIitemCalendarioDeFolga() {
		return colIitemCalendarioDeFolga;
	}

	public Collection<ItemCalendarioDeTrabalho> getColItemCalendarioDeTrabalho() {
		return colItemCalendarioDeTrabalho;
	}

	public Collection<OrdemServico> getColOrdemServico() {
		return colOrdemServico;
	}

	public Collection<Regiao> getColRegiao() {
		return colRegiao;
	}

	public Collection<Viatura> getColViatura() {
		return colViatura;
	}

	public Collection<Visita> getColVisita() {
		return colVisita;
	}

	public Integer getId() {
		return id;
	}
	
	public void setEmpresaTerceira(EmpresaTerceira empr) {
		this.empresaTerceira = empr;
	}
	 
	public void setColIitemCalendarioDeFolga(
			Collection<itemCalendarioDeFolga> colIitemCalendarioDeFolga) {
		this.colIitemCalendarioDeFolga = colIitemCalendarioDeFolga;
	}
	 
	public void setColItemCalendarioDeTrabalho(
			Collection<ItemCalendarioDeTrabalho> colItemCalendarioDeTrabalho) {
		this.colItemCalendarioDeTrabalho = colItemCalendarioDeTrabalho;
	}
	 
	public void setColOrdemServico(Collection<OrdemServico> colOrdemServico) {
		this.colOrdemServico = colOrdemServico;
	}
	 
	public void setColRegiao(Collection<Regiao> colRegiao) {
		this.colRegiao = colRegiao;
	}
	 
	public void setColViatura(Collection<Viatura> colViatura) {
		this.colViatura = colViatura;
	}
	 
	public void setColVisita(Collection<Visita> colVisita) {
		this.colVisita = colVisita;
	}

	public String getCpf() {
		return cpf;
	}

	public void setCpf(String cpf) {
		this.cpf = cpf;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}
	 
}
 
